Skip to main content

6. 指令分组表

本章逐条列出全部 919 条指令。分组与功能模型的语义单元对应:int 241 / fp 178 / fp64+sfu 64 / lsu 301 / xlane 37 / misc 16,tex/gfx 82 条在 §7(unsupported)。每组的子表按编码族划分;语义列为一行摘要,逐条完整语义以 YAML semantics 字段为准(本文含勘误 v0.1.2 修正)。

6.0 列说明与 flag 图例​

  • 操作数:字段:类型。类型缩写:v = vreg(向量寄存器)、vp = vpair(64 位对)、h = vreg16(半寄存器)、u = ureg(uniform)、up = upair、d4/d8 = 描述符、sN/uN = 有/无符号立即数(N 位)、k32 = 32 位原始立即数、ln7 = lane 号、at7 = 属性槽(location*4+comp)、t7/t12 = tile/texel 偏移、o22/o19/o17 = 分支偏移(×4 字节)、j10 = 间接偏移、c_vm…c_sm = waitcnt 字段、rm/cpol/dim/csr = 枚举、mod3 = 源修饰位。^N = 连续 N 个寄存器;* = tied(目的兼作源)。
  • 编码:格式 + fixed 字段(十六进制)。位图见 §2.2;match/mask 以 YAML 为准。
  • 延迟:fixed:n = n 周期后写回;async:c = 由 waitcnt 的 c 计数器跟踪(§2.6)。
  • 标志:
缩写flag含义
eiexec_ignored独立于 EXEC 执行(uniform、控制或显式 lane 操作)
rereads_exec把 EXEC 当数据输入
wewrites_exec修改 EXEC
ebends_block可能转移控制或结束 warp(基本块边界)
brbranch立即数为相对本指令地址的 PC 相对字节偏移
ixindirect目标在 u 寄存器中(32 位代码偏移)
calcall把返回地址 PC+4 写入 u 寄存器
cdcond条件控制转移
tmterminates结束整个 warp
mtmay_trap可能产生陷阱
szserializing等待此前固定延迟工作完成,后续指令可见其效果
sysync同步(屏障、互锁、waitcnt)
ldload读内存
ststore写内存
atatomic读改写内存
cocache_opcache 维护操作(内存模型构件)
bcbounds_checked越界或 null:load 读 0,store/atomic 丢弃
dbdesc_based使用 u 内描述符(全零 = null)
spsparse_statusrsd=1 时额外 dword 收到 residency code(0 = resident)
fmfp_mode结果依赖 MODE(舍入 / 次正规处理)
rmorm_override有显式 rm 操作数;dyn 使用 MODE
apapprox近似结果(误差界见语义列)
optoptional配置可不实现,驱动报告能力
wqmneeds_wqm读 2x2 quad 邻居,需 whole-quad 模式
fofrag_only仅 fragment/tile shader
p64pair64使用 64 位寄存器对(偶对齐)
h16half16操作 16 位半
uruniform_result把 per-lane 数据归约到 uniform
xlcross_lane读取其他 lane
irindexed_reg寄存器号运行时计算(相对寻址)